package com.icekrvams.billing.listeners

import com.android.billingclient.api.BillingResult
import com.android.billingclient.api.Purchase

interface PurchaseConfirmListener {
    /**
     * 订阅商品被确认。
     * Billing 组件会在查询到已拥有商品和已拥有商品发生更新时，遍历列表，将其中未被确认的商品进行确认。
     * 客户端开发无需关心商品的确认流程。
     * @param purchase 被确认的商品。
     */
    fun onSubAcknowledged(purchase: Purchase) {}

    /**
     * 订阅商品确认失败。
     * @param purchase 确认失败的商品。
     * @param billingResult 结果信息。
     */
    fun onSubAcknowledgeFailed(
        purchase: Purchase,
        billingResult: BillingResult
    ) {
    }

    /**
     * 一次性内购商品确认完成。
     * Billing 组件会在查询到已拥有商品和已拥有商品发生更新时，遍历列表，将其中未被确认的商品进行确认。
     * 客户端开发无需关心商品的确认流程。
     * @param purchase 被确认的商品。
     */
    fun onOneTimeIapAcknowledged(purchase: Purchase) {}

    /**
     * 一次性内购商品确认失败。
     * @param purchase 确认失败的商品。
     * @param billingResult 结果信息。
     */
    fun onOneTimeIapAcknowledgeFailed(
        purchase: Purchase,
        billingResult: BillingResult
    ) {
    }

    /**
     * 可消耗性内购商品确认完成。
     * Billing 组件会在查询到已拥有商品和已拥有商品发生更新时，遍历列表，将其中未被确认的商品进行确认。
     * 客户端开发无需关心商品的确认流程。
     * @param purchase 被确认的商品。
     */
    fun onConsumableIapConsumed(purchase: Purchase) {}

    /**
     * 可消耗性内购商品确认失败。
     * @param purchase 确认失败的商品。
     * @param billingResult 结果信息。
     */
    fun onConsumableIapConsumeFailed(
        purchase: Purchase,
        billingResult: BillingResult
    ) {
    }
}
